#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        //先将矩阵中的0换位一个不可能出现的字
        int replaceValue = INT16_MIN;
        for(int i = 0;i<matrix.size();++i){
            for(int j =0;j<matrix[0].size();++j){
                if(matrix[i][j]==0){
                    matrix[i][j] = replaceValue;
                }
            }
        }

        //置为其它值后，再扫描
        for(int i = 0;i<matrix.size();++i){
            for(int j = 0;j<matrix[0].size();++j){
                if(matrix[i][j]==replaceValue){
                    for(int t = 0;t<matrix[0].size();++t){
                        if(t!=j&&matrix[i][t]!=replaceValue){
                            matrix[i][t] = 0;
                        }
                    }
                    for(int t = 0;t<matrix.size();++t){
                        if(t!=i&&matrix[t][j]!=replaceValue){
                            matrix[t][j]=0;
                        }
                    }

                }
            }
        }

        //将所有replacevalue换掉
        for(int i = 0; i<matrix.size();++i){
            for(int j = 0;j<matrix[0].size();++j){
                if(matrix[i][j]==replaceValue){
                    matrix[i][j] = 0;
                }
            }
        }
    }
};


int main(){
    Solution S;
    vector<vector<int>> V = {{1},{0}};
    S.setZeroes(V);
    return 0;   
}